package chatper1

object demo3_type_convert {
  def main(args: Array[String]): Unit = {
    // 1.自动类型转换
    val a1:Byte = 10
    val b1:Long = 1234
    // 这里做加法时，系统会自动将所有数据类型转成精度大的那种数据类型
    // 所以a1会被转成long类型后执行加法
    val result1 = a1 + b1
    println(result1)
    println(result1.getClass.getSimpleName)

    val a2:Byte = 10
    // 小精度的给大的，没问题
    val b2:Int = a2
    // 大精度的给小的，不行
    // val c2:Byte = b2:Int

    val a3:Byte = 10
    val b3:Char = 'b'
    // val c3:Byte = b3
    //println(c3) // 编译通过，但执行报错 type mismatch


    val a4:Byte = 12
    val b4:Short = 25
    val c4:Char = 'c'
    //在做加法时，a4，b4，c4都被转换成int类型
    val result4:Int = a4+b4+c4
    println(result4)

    // 数值类型和string类型的转换
    //数值转string
    val n:Int = 27
    val s:String = n + ""
    println(s"s=${s}")

    // string转数值
    val m:Int = "12".toInt
    val f:Float = "12.3".toFloat

    //
    val a5:Int = 130
    val b5:Byte = a5.toByte
    println(s"b5=${b5}")
    // 转为二进制然后精度溢出
  }
}
